package com.jxdinfo.hussar.activitidemo.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.jxdinfo.hussar.activitidemo.bean.ChatMessage;
import com.jxdinfo.hussar.activitidemo.bean.TdbYjMEvent;
import com.jxdinfo.hussar.activitidemo.bean.TdbYjMEventDetail;
import com.jxdinfo.hussar.activitidemo.bean.TdbYjMEventInteraction;

/**
 * <p>
 * 应急事件Mapper 接口
 * </p>
 *
 * @author zzd
 * @since 2019-04-22
 */
public interface TdbYjMEventMapper extends BaseMapper<TdbYjMEvent> {

	/**
	 * 根据车型和故障代码查询处置流程以及处置流程详细
	 * 
	 * @param map
	 * @return
	 */
	List<Map<String, Object>> selectFlowByTrainId(Map<String, Object> map);

	/**
	 * 根据车型和故障代码查询处置流程以及处置流程详细的条数
	 * 
	 * @param map
	 * @return
	 */
	String selectNumFlowByTrainId(Map<String, Object> map);

	/**
	 * 新增应急事件主表数据
	 * 
	 * @param event
	 * @return
	 */
	int insertEventInfo(TdbYjMEvent event);

	/**
	 * 修改应急事件主表数据
	 * 
	 * @param event
	 * @return
	 */
	int updateEventInfo(TdbYjMEvent event);

	/**
	 * 批量删除应急事件主表信息
	 */
	int deleteEventInfo(Map<String, Object> map);

	/**
	 * 批量删除应急事件关联故障代码表信息
	 * 
	 * @param map
	 * @return
	 */
	int deleteEventCodeInfo(Map<String, Object> map);

	// 更新事件状态为完成
	int updateEventStatus(TdbYjMEventDetail eventDetail);

	/**
	 * 插入应急处置交互表
	 *
	 * @param interaction
	 * @return
	 */
	void insertEventInteraction(TdbYjMEventInteraction interaction);

	/**
	 * 根据条件查询应急事件主表信息
	 *
	 * @param map
	 * @return
	 */
	List<Map<String, Object>> selectEventInfo(Page page, Map<String, Object> map);

	/**
	 * 根据条件查询应急事件主表条数
	 *
	 * @param map
	 * @return
	 */
	String selectNumEventInfo(Map<String, Object> map);

	/**
	 * 新增应急事件主表和故障代码关联表信息
	 *
	 * @param map
	 * @return
	 */
	int insertEventCode(Map<String, Object> map);

	/**
	 * 查询聊天室聊天记录
	 * 
	 * @param interaction
	 * @return
	 */
	List<ChatMessage> selectChatRecord(Page page, TdbYjMEventInteraction interaction);

	/**
	 * 查询聊天室聊天记录条数
	 * 
	 * @param interaction
	 * @return
	 */
	Integer selectChatRecordCount(TdbYjMEventInteraction interaction);

	/**
	 * 根据id获取应急处置主表
	 * 
	 * @param event
	 * @return
	 */
	TdbYjMEvent selectEventById(TdbYjMEvent event);

	Integer getTrackEventCount();

	/**
	 * 根据主键id更新上报状态
	 */
	int updateReportStatus(@Param("sReportId") String sReportId, @Param("sEventId") String sEventId);

	/**
	 * 根据车组号查询车型
	 * 
	 * @param sTarinsetid
	 * @return
	 */
	String selectTarinSetNameById(@Param("sTarinsetid") String sTarinsetid);
}
